/* 
    需求：完成以下操作
     1. 文件夹创建
     2. 文件夹递归创建

     3. 文件夹读取
     5. 文件夹递归读取

     6. 文件夹删除
     7. 文件夹递归删除
*/

const fs = require("fs");
const path = require("path");

let customDir = path.join(__dirname, "./customDir/a/b/c");

/* 2. 文件夹递归创建 */
// fs.mkdir(customDir, { recursive: true }, (err, result) => {
//   if (err) throw err;
//   console.log(result);
// });

/* 3. 文件夹读取 */
// fs.readdir("./customDir", (err, result) => {
//   if (err) throw err;
//   console.log(result, "readdir");
// });

/* 7. 文件夹递归删除 */
// fs.rm("./customDir", { recursive: true }, (err, result) => {
//   if (err) throw err;
//   console.log('删除文件夹成功', 'rm');
// });

/* 5. 文件夹递归读取 */
/* 由于nodejs readdir 不支持递归读取子目录，所以需要手动编写 */

function readdirRecusive(directory, callback) {
  fs.readdir(directory, (err, files) => {
    if (err) throw err;

    files.forEach((file) => {
      let fullPath = path.join(directory, file);

      fs.stat(fullPath, (err, stats) => {
        if (err) throw err;
        if (stats.isDirectory()) {
          fs.readdir(fullPath, (err, obj) => {
            if (err) throw err;
            if (!obj.length) {
              callback(fullPath);
            } else {
              readdirRecusive(fullPath, callback);
            }
          });
        } else {
          callback(fullPath);
        }
      });
    });
  });
}

readdirRecusive("./customDir", (file) => {
  console.log(file);
});
